const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test', {useUnifiedTopology: true, useNewUrlParser: true});

//设计集合结构
const userSchema = new mongoose.Schema({
    username: {
        type: String,
        required: true //必填
    },
    password: {
        type: String,
        required: true //必填
    },
    email: {
        type: String
    }
})


//将集合结构发布为模型
//第一个参数为集合名称,mongoose会自动将大写的字符串自动生成复数
//返回模型构造函数
const User = mongoose.model('User', userSchema);


//通过模型构造函数创建对象
let user = new User({username: "黄鑫", password: "1"})
// 持久化
// user.save().then(res=>{
//     console.log("存储成功");
//     console.log(res);
// }).catch(error=>{
//     console.log("存储失败");
//     console.log(error);
// })


//查询
// const query = User.find(); // `query` is an instance of `Query`
// query.setOptions({ lean : true }); //该属性设置返回的对象是否为模型构造的对象,true则为不是,false则返回的对象会有save等方法
// query.exec(function (error,res) {
//     if (error){
//         console.log(error);
//     }
//     console.log(res);
// })


User.find(function (error, res) {
    if (error) {
        console.log("读取错误");
    } else {
        console.log(res);
    }
})

//条件查询
// User.find({username:"黄鑫"},function (error,res) {
//     if (error){
//         console.log("读取错误");
//     } else{
//         console.log(res);
//     }
// })

//查询一个
// User.findOne({username:"黄鑫"},function (error,res) {
//     if (error){
//         console.log("读取错误");
//     } else{
//         console.log(res);
//     }
// })
//
// //根据条件删除一个
// User.deleteOne({_id:"5db65066c56d9a19341f8595"},function (error,res) {
//     if (error){
//         console.log("删除失败");
//     } else{
//         console.log(res);
//     }
// })
//
// //根据条件删除多个
// User.deleteMany({password:"123"},function (error,res) {
//     if (error){
//         console.log("删除失败");
//     } else{
//         console.log(res);
//     }
// })


//根据条件更新一个
User.updateOne(
    {_id: "5db65ccdeb376f3bac59d8b5"},  //条件
    {username: "abc"}, //更新的属性
    function (error, res) {
        if (error) {
            console.log(error);
        }
        console.log(res);
    })



//根据条件更新多个个
User.updateMany(
    {password: "1"},  //条件
    {username: "黄鑫凯"}, //更新的属性
    function (error, res) {
        if (error) {
            console.log(error);
        }
        console.log(res);
    })